#ifndef OPERACOES_H
#define OPERACOES_H

#include <math.h>
#include "../basicas/ponto.h"

class Operacoes
{
public:
    static Ponto somaPonto(Ponto p1, Ponto p2);
    static Ponto subtraiPonto(Ponto p1, Ponto p2);
    static Ponto multEscalar(Ponto v, float k);
    static Ponto divEscalar(Ponto v, float k);
    static Ponto somaBaricentrica(Ponto p1, Ponto p2, float t);
    static float produtoInterno(Ponto v1, Ponto v2);
    static bool ehOrtogonal(Ponto v1, Ponto v2);
    static Ponto ortogonalizaVetor(Ponto vetor, Ponto vetorReferencia);
    static Ponto normalizaVetor(Ponto vetor);
    static Ponto produtoVetorial(Ponto v1, Ponto v2);
    static Ponto mudancaSistemaCoordenadas(Ponto p, Ponto c, Ponto vetorU, Ponto vetorV, Ponto vetorN);
    static Ponto coordenadasBaricentricas(Ponto p, Ponto vertice1, Ponto vertice2, Ponto vertice3);
    static Ponto calculaNormalTriangulo(Ponto vertice1, Ponto vertice2, Ponto vertice3);
    static float coeficienteAngular(Ponto p1, Ponto p2);
    static float coeficienteLinear(Ponto p1, Ponto p2);
    static bool pontoComMaiorY(Ponto principal, Ponto comparacao1, Ponto comparacao2);
    static bool pontoComMenorX(Ponto principal, Ponto comparacao1);
};

#endif // OPERACOES_H
